home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / DockStrip / DockStrip.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-24  |  3.7 KB  |  127 lines

  1. #include <PP_Types.h>
  2. #include <MacTypes.h>
  3. #include <QuickDraw.h>
  4. #include <QDOffscreen.h>
  5.  
  6. #pragma once
  7.  
  8. typedef STACK_UPP_TYPE (InitGrafProcPtr)                             InitGrafUPP;
  9. typedef STACK_UPP_TYPE (SetPortProcPtr)                             SetPortUPP;
  10. typedef STACK_UPP_TYPE (Get1IndResourceProcPtr)                     Get1IndResourceUPP;
  11.  
  12. typedef pascal OSErr (*Patched_GetDiskFragmentProcPtr) (
  13.     const FSSpec*        fileSpec,
  14.     long                offset,
  15.     long                length,
  16.     Str63                fragName,
  17.     CFragLoadOptions    findFlags,
  18.     CFragConnectionID*    connID,
  19.     Ptr*                mainAddress,
  20.     Str255                errName);
  21.  
  22.  
  23. enum { 
  24.     initGraf_ProcInfo = kPascalStackBased
  25.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE (sizeof (void*))),
  26.     setPort_ProcInfo = kPascalStackBased
  27.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE (sizeof (GrafPtr))),
  28.     get1IndResource_ProcInfo = kPascalStackBased
  29.         | RESULT_SIZE (SIZE_CODE (sizeof (Handle)))
  30.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE (sizeof (ResType)))
  31.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE (sizeof (short)))
  32.  
  33. };
  34.  
  35. #define NewInitGrafProc(userRoutine)     \
  36.     (InitGrafUPP) NewRoutineDescriptor ((ProcPtr)(userRoutine), initGraf_ProcInfo, GetCurrentArchitecture())
  37. #define NewSetPortProc(userRoutine)     \
  38.     (SetPortUPP) NewRoutineDescriptor ((ProcPtr)(userRoutine), setPort_ProcInfo, GetCurrentArchitecture())
  39. #define NewGet1IndResourceProc(userRoutine)     \
  40.     (Get1IndResourceUPP) NewRoutineDescriptor ((ProcPtr)(userRoutine), get1IndResource_ProcInfo, GetCurrentArchitecture())
  41.  
  42. #define CallInitGrafProc(userRoutine, globals)     \
  43.     CALL_ONE_PARAMETER_UPP((userRoutine), initGraf_ProcInfo, (globals))
  44. #define CallSetPortProc(userRoutine, port)     \
  45.     CALL_ONE_PARAMETER_UPP((userRoutine), setPort_ProcInfo, (port))
  46. #define CallGet1IndResourceProc(userRoutine, type, index)     \
  47.     (Handle) (CALL_TWO_PARAMETER_UPP((userRoutine), setPort_ProcInfo, (type), (index)))
  48.  
  49.  
  50. typedef pascal long (*SdevMainProcPtr) (
  51.     unsigned long message,
  52.     Handle prefsHandle,
  53.     Rect *statusRect,
  54.     GrafPtr statusPort);
  55.  
  56. typedef STACK_UPP_TYPE (SdevMainProcPtr)     SdevMainUPP;
  57.  
  58. enum { 
  59.     sdevMain_ProcInfo = kPascalStackBased
  60.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE (sizeof (unsigned long)))
  61.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE (sizeof (Handle)))
  62.         | STACK_ROUTINE_PARAMETER (3, SIZE_CODE (sizeof (Rect*)))
  63.         | STACK_ROUTINE_PARAMETER (4, SIZE_CODE (sizeof (GrafPtr)))
  64.         | RESULT_SIZE (SIZE_CODE (sizeof (long)))
  65. };
  66.  
  67. #define NewSdevMainProc(userRoutine)     \
  68.     (SdevMainUPP) NewRoutineDescriptor ((ProcPtr)(userRoutine), sdevMain_ProcInfo, GetCurrentArchitecture())
  69.  
  70. #define CallSdevMainProc(userRoutine, message, prefsHandle, statusRect, statusPort)     \
  71.     (long) (CALL_FOUR_PARAMETER_UPP((userRoutine), sdevMain_ProcInfo, (message), (prefsHandle), (statusRect), (statusPort)))
  72.     
  73. struct SStubInfo {
  74.     Boolean    isFragment; /* 0 = code resource, 1 = code fragment */
  75.     union {
  76.         Handle    handle;
  77.         ProcPtr    procPtr;
  78.     } stub;
  79.     union {
  80.         Handle    handle;
  81.         ProcPtr    procPtr;
  82.     } module;
  83.     UInt32    width;
  84.     Boolean    goingUp;
  85.     Boolean startingUp;
  86.     SInt32    amountWider;
  87. };
  88.  
  89. typedef struct SStubInfo SStubInfo;
  90.  
  91. #define StubListSize            128
  92. #define kMagnificationFactor    3
  93.  
  94. struct SDockStripGlobals {
  95.     GWorldPtr        offscreenGWorld;
  96.     GWorldPtr        updatePort;
  97.     CGrafPort        ourPort;
  98.     SStubInfo        moduleList [StubListSize];
  99.     SetPortUPP        saveSetPort;
  100.     Boolean            someRunning;
  101.     Boolean            needUpdate;
  102.     long            lastUpdate;
  103. };
  104.  
  105. typedef struct SDockStripGlobals SDockStripGlobals;
  106.  
  107. #define dockStripGestalt 'doks'
  108. #define dockStripSignature 'doks'
  109.  
  110. long AfterModule (
  111.     SDockStripGlobals* globals,
  112.     UInt32    index,
  113.     unsigned long message,
  114.     Handle prefsHandle,
  115.     Rect* statusRect,
  116.     GrafPtr statusPort,
  117.     long result);
  118.  
  119. unsigned long BeforeModule (
  120.     SDockStripGlobals* globals,
  121.     UInt32    index,
  122.     unsigned long message,
  123.     Handle prefsHandle,
  124.     Rect* statusRect,
  125.     GrafPtr statusPort,
  126.     Boolean* runModule);
  127.